//
//  ViewController.swift
//  案例研究字典
//
//  Created by 崔博 on 2017/7/13.
//  Copyright © 2017年 崔博. All rights reserved.
//
// swift 可选链用于在嵌套的类或结构体中对方法或属性的考虑
// 免去大量的判断
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let cities = ["Paris": 2241, "Marid": 2174, "China": 1111]
        guard let population = cities[0] else {
            return nil
        }
        let x: Int = 3
        let y: Int? = nil
        let z: Int = x + y
        
    }
}
// 可选择是在代码执行前捕获到错误而且 显示可选类型有助于避免缺失值导致的意外崩溃
// 可选映射

func ??<T>(optinnal: T?, defalutValue: T) -> T {
    
    if let x = optinnal {
        return x
    }else{
        return defalutValue
    }
    
}
func ??<T>(optional: T?, defaultValue: () -> T) -> T {
    if let x = optional{
        return x
    }else{
        return defaultValue()
    }
}

